package setting

type SrvConfig struct {
	Name string `mapstructure:"name" json:"name"`
}

type CorsConfig struct {
	AllowOrigins []string `mapstructure:"allow_origins" json:"allow_origins"`
}

type ConsulConfig struct {
	Host string   `mapstructure:"host" json:"host"`
	Port int      `mapstructure:"port" json:"port"`
	Tags []string `mapstructure:"tags" json:"tags"`
}

type JWTConfig struct {
	SigningKey string `mapstructure:"signing_key" json:"signing_key"`
	Issuer     string `mapstructure:"issuer" json:"issuer"`
	Expire     int    `mapstructure:"expire" json:"expire"`
}

type ServerConfig struct {
	Name            string `mapstructure:"name" json:"name"`
	Port            int    `mapstructure:"port" json:"port"`
	*CorsConfig     `mapstructure:"cors" json:"cors"`
	*JWTConfig      `mapstructure:"jwt" json:"jwt"`
	*ConsulConfig   `mapstructure:"consul" json:"consul"`
	UserOpSrvConfig SrvConfig `mapstructure:"userop_srv" json:"userop_srv"`
	GoodsSrvConfig  SrvConfig `mapstructure:"goods_srv" json:"goods_srv"`
}

type NacosCliConfig struct {
	NamespaceId string `mapstructure:"namespace_id" json:"namespace_id"`
	LogDir      string `mapstructure:"log_dir" json:"log_dir"`
	CacheDir    string `mapstructure:"cache_dir" json:"cache_dir"`
	LogLevel    string `mapstructure:"log_level" json:"log_level"`
	Goods       string `mapstructure:"userop" json:"userop"`
	Password    string `mapstructure:"password" json:"password"`
	DataId      string `mapstructure:"data_id" json:"data_id"`
	Group       string `mapstructure:"group" json:"group"`
}

type NacosSerConfig struct {
	IpAddr string `mapstructure:"ip_addr" json:"ip_addr"`
	Port   uint64 `mapstructure:"port" json:"port"`
}

type NacosConfig struct {
	*NacosCliConfig `mapstructure:"nacos_cli" json:"nacos_cli"`
	*NacosSerConfig `mapstructure:"nacos_ser" json:"nacos_ser"`
}
